package main

//常量

func main() {
	const b string = "abc" //显示类型
	const Pi = 3.14159     //隐式类型  一个没有指定类型的常量被使用时，会根据其使用环境而推断出它所需要具备的类型
	//println(test(5, 5))    //输出10
	//const const1 = test(5, 5) //这样调用函数赋值给常量编译是不通过的，因为常量的值必须要在编译时就被确定
	//编译期间自定义函数均属于未知，因此无法用于常量的赋值，但内置函数可以使用

	//常量的其他赋值形式
	//const beef, two, c = "eat", 2, "veg"
	//const Monday, Tuesday, Wednesday, Thursday, Friday, Saturday = 1, 2, 3, 4, 5, 6
	//const (
	//	Monday, Tuesday, Wednesday = 1, 2, 3
	//	Thursday, Friday, Saturday = 4, 5, 6
	//)

	//常量用作枚举
	const (
		Unknown = 0
		Female  = 1
		Male    = 2
	)

	//iota是go中特殊的常量，可以认为是一个可以为编译器修改的常量，iota是go语言的常量计数器
	//iota在const关键字出现时将被重置为0，可以理解为是const语句块的索引
	const (
		a = iota
		x = iota
		i = "iota"
		z
		y = 100
		p
		s = iota
	)
	println(a, x, i, z, y, s)
}

func test(a int, b int) (t int) {
	return a + b
}
